//简易Ts版
// versionUpdatePlugin.js
import fs from 'fs'
import path from 'path'

function handleType(oldVersion, type = 'release') {
  var oldVersionArr = oldVersion.split('.')
  //版本号第一位 如：1.2.3 则为 1
  var firstNum = +oldVersionArr[0]
  //版本号第二位 如：1.2.3 则为 2
  var secondNum = +oldVersionArr[1]
  //版本号第三位 如：1.2.3 则为 3
  var thirdNum = +oldVersionArr[2]
  switch (type) {
    case 'release':
      //release分支的处理逻辑
      ++secondNum
      thirdNum = 0
      break

    case 'hotfix':
      //hotfix分支的处理逻辑
      ++thirdNum
      // 新增逻辑：如果第三位达到10，第二位加1，第三位重置为0
      if (thirdNum === 10) {
        thirdNum = 0
        ++secondNum
      }
      break

    default:
      // 默认按照最小版本处理
      ++thirdNum
      // 新增逻辑：如果第三位达到10，第二位加1，第三位重置为0
      if (thirdNum === 10) {
        thirdNum = 0
        ++secondNum
      }
      break
  }
  // 新增逻辑：如果第二位达到10，第一位加1，第二位重置为0
  if (secondNum === 10) {
    secondNum = 0
    ++firstNum
  }
  return firstNum + '.' + secondNum + '.' + thirdNum
}

export default () => {
  return {
    name: 'version-update',
    buildEnd() {
      // if (process.env.NODE_ENV === 'development') return
      const url = path.join(process.cwd(), './public/version.json')
      const json = fs.readFileSync(url, 'utf-8')
      const pkg = JSON.parse(json)
      // hotfix： 最小版本更新  release：穩定版本
      const version = handleType(pkg.version, 'hotfix')
      pkg.version = version
      fs.writeFileSync('./public/version.json', JSON.stringify(pkg, null, 2))
    }
  }
}
